An operating system (OS) typically includes a collection of software (i.e., machine readable instructions) that manages computer hardware resources and provides common services for computer programs. The OS typically includes a loader that is responsible for loading computer programs. For example, the loader places computer programs into memory, and further prepares the computer programs for execution. The loader typically operates by reading the contents of an executable file containing the computer program instructions into memory, and then performing other preparatory tasks to prepare the executable file for running. For example, the loader typically prepares computer program code for execution by relocating memory addresses so that they point to the correct location when a function call is made to the computer program code in another module, such as a shared library. The loader also sets the protection flags on memory pages in which the computer program code is placed. Once the loading is completed, the OS may start the computer program by passing control to the loaded computer program code.